A network is an interconnection of computer systems and various connection devices, such as switches, routers, etc. The interconnection allows a user on one of the computer systems to obtain functionality that may not exist on that computer system. For example, when a user wants to learn about a particular part on an automobile, the user may access the Internet through a personal computer system and retrieve the relevant information. In another example, when a particular program requires more processing power than that which is available locally, the program may be distributed across a network to a variety of computer systems which each process a portion of the program.
Since the inception of using interconnected computer systems, various configuration models, such as peer-to-peer systems, client-server, etc., have been designed. For example, each computer system in a peer-to-peer system is given equal status to process requests from other computer systems in the peer-to-peer system. In contrast, in a client-server model, clients transmit a request to one or more specifically designated servers which process the request.
One particular type of client-server model includes a collection of servers referred to as a cluster. The cluster includes multiple replicas. Replicas are computer systems that are able to process the same requests. Specifically, at least one application and/or data are identical across the replicas in the cluster. Thus, a client may send a request to any replica in the cluster and receive the same result regardless of the replica that processes the request.
Occasionally, replicas fail. Specifically, a replica may temporarily or permanently be unable to process requests in a reasonable timeframe. From the client perspective, the client may send a request to a failed replica. Upon not receiving a response within the reasonable timeframe, the client may recognize that the replica has failed and transmit the request to a different replica.